package Homework;

import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class DOM4J {

	//声明文档对象
	private Document document;
	//声明文档路径
	private String path="src/XML/books.xml";
	//创建代码块
	{
		//创建解析器
		SAXReader saxReader = new SAXReader();
		//传入要解析的文档
		try {
			document=saxReader.read(path);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		//创建当前DOM4J对象
		DOM4J dom4j = new DOM4J();
		//调用文档解析方法
		dom4j.showInfo();
		//调用往文档中添加文字的方法
		dom4j.add();

	}

	//往文档中添加文字的方法
	private void add() {
		//先获取文档的根元素
		Element rootElement = document.getRootElement();
		//向文档中添加一个book子元素
		Element bookElement = rootElement.addElement("book");
		//向文档中添加id属性
		bookElement.addAttribute("id", "0006");
		//向文档中添加相应的元素
		bookElement.addElement("name").setText("盗墓笔记");
		bookElement.addElement("author").setText("南派三叔");
		bookElement.addElement("price").setText("59.99");
		bookElement.addElement("pub").setText("上海文化");
		
		//将变化的文档进行更新
		OutputFormat prettyPrint = OutputFormat.createPrettyPrint();//保证文字的美观
		prettyPrint.setEncoding("UTF-8");//设置输出格式，防止乱码
		try {
			XMLWriter writer = new XMLWriter(new FileWriter(path),prettyPrint);
			writer.write(document);
			writer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	//解析文档的方法
	private void showInfo() {
		//先获取文档的根元素
		Element rootElement = document.getRootElement();
		//获取根元素下名为book的子元素
		List<Element> bookElements = rootElement.elements("book");
		//循环遍历集合
		for (Element bookElement : bookElements) {
			//获取book的id属性
			System.out.println(bookElement.attributeValue("id"));
			//获取book的所有子元素
			List<Element> elements = bookElement.elements();
			//循环遍历子元素集合，并输出
			for (Element element : elements) {
				System.out.println("\t"+element.getTextTrim());
			}
		}
	}

}
